<template>
  <div class="shoplist">
    <ul>
		<li v-for="item in shoplist" :key="item.id">
			<img :src="item.src" >
			<div>
				<p>{{item.title}}</p>
				<p>¥{{item.price}}</p>
				<p><button @click="add(item)">加入购物车</button></p>
			</div>
		</li>
	</ul>
  </div>
</template>

<script>
import {mapState} from 'vuex'
export default{
	name:'ShopList',
	//可以通过computed计算属性获取store中的数据
	// computed:{
	// 	shoplist(){
	// 		return this.$store.state.shoplist;
	// 	}
	// },
	//vuex提供了mapState辅助函数，可以简化computed计算属性的写法
	computed:mapState(["shoplist"]),
	methods:{
		add(item){
			//组件里是不能直接变更状态的，可以通过提交一个mutation去变更状态
			//方法1
			// this.$store.commit('add',item);
			//方法2
			//在组件里面分发一个action去变更状态
			this.$store.dispatch('add',item);
			
		}
	}
}
</script>
<style scoped>
	.shoplist{
		width: 100%;
		padding-bottom:50px;
	}
	
	li{
		position: relative;
		border-bottom:1px dashed #ccc ;
		padding: 5px;
	}
	div{
		display: inline-block;
		position: absolute;
		top: 10px;
		width: 120px;
		line-height: 30px;
		font-size: 14px;
	}
	img{
		width: 100px;
		border: 1px solid #ccc;
		margin: 10px 10px 0px 10px;
	}
	div p:nth-child(2){
		color: #f00;
	}
	button{
		color: white;
		background-color: coral;
		border: none;
		padding: 5px;
	}
</style>
